/*
 * 版权声明 (c) 2025 XXX科技有限公司
 *
 * 本软件及其相关文档文件受版权保护。未经版权所有者明确书面许可，任何单位或个人不得
 * 以任何形式复制、传播、修改、出售、出租、反向工程、反编译或利用本软件的任何部分。
 *
 * 对于任何违反本声明的行为，版权所有者保留追究法律责任的权利。
 */

#ifndef __SERVICE_H__
#define __SERVICE_H__
#include <string>
#include <sstream>
#include <stdint.h>
#include <cstdint>
#include "message.h"

using namespace std;

// 来自注册中心的服务元信息(非网关主体业务对象)
struct ServiceInfo {
	string  Name;        // 服务名称
	string  ServiceIP;   // 服务地址
	ushort  ServicePort; // 服务端口
	uint8_t Priority;    // 服务优先级
	uint8_t Status;      // 服务状态

	string encode() const {
		stringstream ss;
		ss << Name << "|" << ServiceIP << "|" << ServicePort << "|" << static_cast<int>(Priority) << "|" << static_cast<int>(Status);
		return ss.str();
	}

	static ServiceInfo decode(const string &encoded) {
		ServiceInfo  service;
		stringstream ss(encoded);
		getline(ss, service.Name, '|');
		getline(ss, service.ServiceIP, '|');
		ss >> service.ServicePort;
		ss.ignore(); // 忽略'|'
		ss >> service.Priority;
		ss.ignore(); // 忽略'|'
		ss >> service.Status;
		return service;
	}
};

struct SyncEvent {
	ServiceInfo &service;
	const char  *sender_ip;
	const ushort sender_port;
};


#endif //__SERVICE_H__
